System and method for text based placement engine for custom circuit design

ABSTRACT

A system and method that uses a text-based script file to capture a circuit design and allows a circuit designer to manipulate the script file. The circuit designer can add, delete, or move components using various tags and commands that are stored in the script file. When the design is complete, or ready to be tested, the script file is processed creating a layout representation file that is readable by a graphics-based circuit design tool.

BACKGROUND OF THE INVENTION

1. Technical Field

The present invention relates in general to system and method forplacing circuit components on a design layout. More particularly, thepresent invention relates to a system and method for processing atextual design script to place circuit components in a graphical designlayout.

2. Description of the Related Art

Circuit designers use graphically based circuit design tools to placecomponents on a hardware design layout. The visual depiction allows thecircuit designer to see the components and how they interconnect withone another. The completed design can then be tested using a variety oftools before the layout is used to fabricate actual hardware.

Circuit and layout designers place components on a design layout usinginput means such as a mouse or a graphics tablet. The designer visuallyplaces components where the component will be installed in the circuit.For example, if a processor component is designed to utilize localmemory, the processor and the local memory are placed proximate to eachother. After components are placed, they are wired to each other. Thecircuit designer places the components using a specialized softwareapplication designed to graphically depict components. These componentsoften allow the graphic design to be exported to a design language, suchas VHDL, for use in fabricating the circuit. In addition, the softwareapplications often include routing capabilities that allow the circuitdesigner to show how components are wired to each other as well asdepict where the metal between components is routed.

While visual circuit design tools provide a valuable tool for circuitdesigners to view a circuit design before fabrication, working withlarge designs can be problematic, especially when changes are needed.When working with a graphic circuit design tool, many components mayhave to be moved in order to modify a design. For example, if anadditional component is needed in the middle of a large design, thedesigner has to manually move components in order to create enough emptyspace in the middle to accommodate the additional component. A largedesign can include tens or even hundreds of components. Having tomanually select and drag many of the components to new locations is bothtedious and time consuming. In addition, errors in the design may beinadvertently introduced when components are moved.

What is needed, therefore, is a system and method that allows thedesigner to edit a textual file that describes component placement.Furthermore, what is needed is a system and method that converts thetextual file into a format suitable to be read, and further manipulated,by the specialized graphics circuit-design software application.

SUMMARY

It has been discovered that the aforementioned challenges are resolvedusing a system and method that uses a text-based script file to capturea circuit design and allows the designer to manipulate the script file.The circuit designer can add, delete, or move components around usingvarious tags and commands that are stored in the script file. When thedesign is complete, or ready to be tested, the script file is processedcreating a layout representation file that is readable by agraphics-based circuit design tool.

The script file created by the designer indicates which components areproximate to one another without specifying actual dimensions of thevarious components. A separate data file, called a component library,includes information about the various components such as thecomponents' physical dimensions. The system uses rows and columns todetermine placement of components without specifying the width or heightof the individual columns and rows. Instead, the system figures out thewidth and height based upon the size of the components placed in thevarious rows and columns. For example, if components placed in one roware larger, then its row height is greater than a row with smallercomponents. In this manner, the designer specifies which components areproximate to other components without manually placing the individualcomponents. When the components have been placed, the system processesthe script file and determines the actual placement using the componentdimensions read from the component library. If an additional componentis needed, the designer simply adds a reference to the additionalcomponent in the proximate location where it is needed. For example, ifthe additional component is needed on a row in between two othercomponents, then a reference to the additional component is simply addedin the appropriate place in the script file. Now, when the script fileis processed, the additional component will appear on the graphicrepresentation in the appropriate place.

The foregoing is a summary and thus contains, by necessity,simplifications, generalizations, and omissions of detail; consequently,those skilled in the art will appreciate that the summary isillustrative only and is not intended to be in any way limiting. Otheraspects, inventive features, and advantages of the present invention, asdefined solely by the claims, will become apparent in the non-limitingdetailed description set forth below.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention may be better understood, and its numerousobjects, features, and advantages made apparent to those skilled in theart by referencing the accompanying drawings.

FIG. 1 shows a high-level diagram of a text-based file being used tomodify a circuit design layout.

FIG. 2 is a flowchart showing the overall methodology used to create andmodify a circuit design layout using a text-based file.

FIG. 3 is a high-level flowchart for processing the text-based file andcreating a new circuit design layout.

FIG. 4 is a flowchart showing the steps taken to place components in thecircuit design layout based upon data processed in the text-based file.

FIG. 5 illustrates an information handling system which is a simplifiedexample of a computer system capable of performing the computingoperations described herein.

DETAILED DESCRIPTION

The following is intended to provide a detailed description of anexample of the invention and should not be taken to be limiting of theinvention itself. Rather, any number of variations may fall within thescope of the invention, which is defined in the claims following thedescription.

FIG. 1 shows a high-level diagram of a text-based file being used tomodify a circuit design layout. Original layout 100 is a graphicaldepiction of components in a circuit design tool. In the example shown,original layout 100 includes five components—“A” through “E.” Thecomponents occupy two rows and three columns. Components “A,” “B,” and“E” have been placed in the lower row (row 0), while components “C” and“D” have been placed in the higher row (row 1). Likewise, components “A”and “C” have been placed in the first column (column 0), components “B”and “D” have been placed in the next column (column 1), and component“E” has been placed in the last column (column 2). Text-based file 110was used to create original layout 100. As used herein, the terms“text-based file” and “script file” are used interchangeably to refer toa text file, such as file 110, that is processed to create a circuitdesign layout, such as layout 100.

As will be appreciated by those skilled in the art, there may be tens,hundreds, or even thousands of components in a layout, such as layout100. In the examples shown in FIG. 1, a limited number of components areused in order to better show the creation of the circuit design layoutwithout complicating the layouts.

A discussion of text-based file 110 illustrates commands used togenerate the circuit layout. The first command, “initialize,” resets, orinitializes, variables used to keep track of where components areplaced. The next two commands, “column 0,” and “row 0,” sets theplacement of the next placed components to the first column and row. Thenext command, “instance A B,” places an instance of components “A” and“B” starting at the current column and row (i.e., starting at column 0,row 0). The next command, “next row,” is used to move to the next row,in this case “row 1.” The command “instance C D” places an instance ofcomponents “C” and “D” starting at the current column and row (i.e.,starting at column 0, row 1). The “do placement” command is executednext to establish the actual placement of the instanced components, inthis case components “A” through “D.” Another “initialize” command isexecuted to reset the variables used to keep track of placement ofcomponents. The next two commands (column 2 and row 0) set the currentposition to the lowest row and the third column. The “instance E”command places component “E” in the position shown in layout 100.Because component “E” is taller than other components, by placing it inits own column, it is able to physically span both rows 0 and 1 usedwhere components “A” through “D” were placed. The final “do placement”command establishes the actual position of component “E” as shown inlayout 100.

In the example shown, the circuit designer has determined that two newcomponents need to be added to the layout. In updated layout 170, thesenew components are labeled as components “Y” and “Z.” Rather than usingan input device, such as a mouse, to move components around to make roomfor components “Y” and “Z,” the circuit designer instead modifies thescript. As mentioned earlier, those of skill in the art will appreciatethat actual circuit layouts may contain hundreds or even thousands ofcomponents. Having to move all of these components manually is tedious,time consuming, and may introduce component placement errors in thedesign. Instead, at step 120, the circuit designer edits the script file110 and creates modified script file 130. In the example shown,component “Y” is added to row 0 between components “A” and “B” bymodifying instance command 140 (i.e., “instance A B” is changed to“instance A Y B”). Likewise, component “Z” is added to row 1 aftercomponents “C” and “D” by modifying instance command 150 (i.e.,“instance C D” is changed to “instance C D Z”). Finally, because a newcolumn has been added to both row 0 and 1, column command 155 is updatedto indicate that the “E” component is placed in the fourth column(column 3) rather than the third column (column 2).

At step 160, modified script file 130 is processed. Characteristics ofthe various instanced components (“A” through “E,” “Y” and “Z”) areretrieved from component library 170 that includes data regarding eachof the components used in the design. Additionally, by storing componentdata in library file 170, changes to a particular component can beincorporated into a design by updating the library with the component'snew characteristics and running the script file creating a new layout175. Processing of modified script file 130 results in updated layout175. As can be seen in updated layout 175, the components have beenmoved around so that new component “Y” is between “A” and “B” andcomponent “Z” is after components “C” and “D.” In addition, newcomponent “Y” is taller than components “A” and “B,” so the resultingfirst row (row 0) in updated layout 175 is taller than the first row oforiginal layout 100. Likewise, if the shape of any of the othercomponents was changed in component library 170 then the new attributesof the component would be retrieved and the component would appear withthe updated characteristics in updated layout 175.

FIG. 2 is a flowchart showing the overall methodology used to create andmodify a circuit design layout using a text-based file. Processingcommences at 200 whereupon, at step 210, the circuit designer createsand saves design script 220. The commands included in design script 220are similar to the commands shown in script files 110 and 175 in FIG. 1.

When the designer wishes to process the design into a graphical layout(viewable using traditional GUI-based circuit design tools), designscript file 220 is processed. A detailed discussion of the steps takento process design script 220 can be found in Appendix “A” of thisdetailed description. The embodiment shown in Appendix “A” is showncoded in the Perl programming language. Those of skill in the art willappreciate that many other programming languages can be used implementthe teachings herein. Accordingly, the embodiment shown in Appendix “A”is provided as a non-limiting example of a preferred implementation.

During processing of the design script file, each instanced component isassigned to a data structure, such as an array structure (step 230).When each component has been written to the data structure, it is thenplaced on the layout and written to layout representation file 240 (step235). Next, the components placed in the layout are routed to oneanother using either a manual or automated routing procedure (step 245).

The design, as contained in layout representation 240, is tested usingany of a variety of techniques used to test circuit design layouts (step250). A determination is made, based on the testing, as to whetherchanges are needed to the design (decision 260). If testing reveals thatchanges are needed to the design, decision 260 branches to “yes” branch265 whereupon, at step 270, the current design script is loaded into atext editor or word processor and the design is altered to address theerrors noted during testing and saved (step 280). Processing then loopsback to recreate the graphical layout representation (file 240). Thislooping continues until no more changes are needed to the design, atwhich point decision 260 branches to “no” branch 290 and processing endsat 295.

FIG. 3 is a high-level flowchart for processing the text-based file andcreating a new circuit design layout. Processing commences at 300whereupon, at step 310, settings are initialized. These settings includesetting the starting “x” coordinate to a horizontal starting positionand setting the starting “y” coordinate to a vertical starting position.The current row height is initialized to the same value as the starting“y” coordinate value since no components have been added to the currentrow. When a component is added, the row height variable is used to keeptrack of the tallest component in the current row. Likewise, the currentrow width and column width is initialized to the same value as thestarting “X” coordinate value since no components have been added to thecurrent row. When a component is added, the row width variable is usedto keep track of the width of the row and the column width variable isused to keep track of the width of the column (i.e., the widestcomponent in a given column will determine the column width).

After settings have been initialized, the components identified indesign script 220 are processed using the physical characteristics ofthe components stored in component library 170 (predefined process 350,see FIG. 4 and corresponding text for processing details). The result ofpredefined process 350 is layout representation file 240 that is adaptedto be read and processed by a traditional graphics-based circuit designand analysis tool. Processing thereafter ends at 395.

FIG. 4 is a flowchart showing the steps taken to place components in thecircuit design layout based upon data processed in the text-based file.Processing commences at 400 whereupon, at step 405, the data structureused to store data regarding the instanced components is initialized. Atstep 410, a loop is commenced to begin reading design script 220 and endreading the file when an end of file (EOF) condition is encountered. Thefirst line from design script file 220 is read and a determination ismade as to whether a “do placement” command has been encountered(decision 415). If a “do placement” command has not been read, decision415 branches to “no” branch 418 whereupon the component instance isassigned to a row, column, orientation, offset, and priority in the datastructure (step 420). Processing then loops back to read the next linefrom the design script. This looping continues until either theend-of-file condition occurs or a “do placement” command is read.

If a “do placement” command is read, decision 415 branches to “yes”branch 428 whereupon, at step 430, the components that were stored inthe data structure are placed starting at the current x and ycoordinates. A determination is made as to whether the height of thecomponent is greater than the current row height (decision 435). If theheight of the component is greater than the current row height, thendecision 435 branches to “yes” branch 438 whereupon the current rowheight is set to be equal to the height of the component (step 440). Onthe other hand, if the height of the current component is not greaterthan the current row height, then decision 435 branches to “no” branch448, bypassing step 440.

A determination is made as to whether the last column has been processed(decision 450). If the last column has not yet been processed, decision450 branches to “no” branch 452 whereupon, at step 455, the column isincremented, and processing loops back to process the component at thecurrent row and column (after the column has been incremented). Thislooping continues until the last column of the current row has beenprocessed, at which point decision 450 branches to “yes” branch 458. Atthis point, the current row is complete and processing moves to processthe next row (step 460). The starting vertical position (y) is set tothe current y value set during initialization plus the row height of therow that was just completed (step 470). At step 475, the row number isincremented, the current row height is reset to zero (since nocomponents have yet been placed on the new row), and the column width isalso reset to zero (again, since no components have yet been placed onthe new row).

A determination is made as to whether the last row of the designcurrently stored in the data structure has been processed (decision480). If the last row has not been processed, decision 480 branches to“no” branch 482 whereupon processing loops back to read the componentsfrom the data structure placed on the current row. On the other hand, ifthe last row of components currently stored in the data structure hasbeen processed, decision 480 branches to “yes” branch 488 whereuponprocessing loops back to initialize the data structure and continuereading lines from the design script until either another “do placement”command is encountered or the end-of-file is reached on the designscript. This looping continues until all “do placement” commands havebeen processed and the end of file condition is reached, at which pointbranch 490 is taken and processing ends at 495.

FIG. 5 illustrates information handling system 501, which is asimplified example of a computer system capable of performing thecomputing operations described herein. Computer system 501 includesprocessor 500, which is coupled to host bus 502. A level two (L2) cachememory 504 is also coupled to host bus 502. Host-to-PCI bridge 506 iscoupled to main memory 508, includes cache memory and main memorycontrol functions, and provides bus control to handle transfers amongPCI bus 510, processor 500, L2 cache 504, main memory 508, and host bus502. Main memory 508 is coupled to Host-to-PCI bridge 506 as well ashost bus 502. Devices used solely by host processor(s) 500, such as LANcard 530, are coupled to PCI bus 510. Service Processor Interface andISA Access Pass-through 512 provides an interface between PCI bus 510and PCI bus 514. In this manner, PCI bus 514 is insulated from PCI bus510. Devices, such as flash memory 518, are coupled to PCI bus 514. Inone implementation, flash memory 518 includes BIOS code thatincorporates the necessary processor executable code for a variety oflow-level system functions and system boot functions.

PCI bus 514 provides an interface for a variety of devices that areshared by host processor(s) 500 and Service Processor 516 including, forexample, flash memory 518. PCI-to-ISA bridge 535 provides bus control tohandle transfers between PCI bus 514 and ISA bus 540, universal serialbus (USB) functionality 545, power management functionality 555, and caninclude other functional elements not shown, such as a real-time clock(RTC), DMA control, interrupt support, and system management bussupport. Nonvolatile RAM 520 is attached to ISA Bus 540. ServiceProcessor 516 includes JTAG and I2C busses 522 for communication withprocessor(s) 500 during initialization steps. JTAG/I2C busses 522 arealso coupled to L2 cache 504, Host-to-PCI bridge 506, and main memory508 providing a communications path between the processor, the ServiceProcessor, the L2 cache, the Host-to-PCI bridge, and the main memory.Service Processor 516 also has access to system power resources forpowering down information handling device 501.

Peripheral devices and input/output (I/O) devices can be attached tovarious interfaces (e.g., parallel interface 562, serial interface 564,keyboard interface 568, and mouse interface 570 coupled to ISA bus 540.Alternatively, many I/O devices can be accommodated by a super I/Ocontroller (not shown) attached to ISA bus 540.

In order to attach computer system 501 to another computer system tocopy files over a network, LAN card 530 is coupled to PCI bus 510.Similarly, to connect computer system 501 to an ISP to connect to theInternet using a telephone line connection, modem 575 is connected toserial port 564 and PCI-to-ISA Bridge 535.

While the computer system described in FIG. 5 is capable of executingthe processes described herein, this computer system is simply oneexample of a computer system. Those skilled in the art will appreciatethat many other computer system designs are capable of performing theprocesses described herein.

One of the preferred implementations of the invention is a clientapplication, namely, a set of commands (program code) in a code modulethat may, for example, be resident in the random access memory of thecomputer. Until required by the computer, the set of commands may bestored in another computer memory, for example, in a hard disk drive, orin a removable memory such as an optical disk (for eventual use in a CDROM) or floppy disk (for eventual use in a floppy disk drive), ordownloaded via the Internet or other computer network. Thus, the presentinvention may be implemented as a computer program product for use in acomputer. In addition, although the various methods described areconveniently implemented in a general purpose computer selectivelyactivated or reconfigured by software, one of ordinary skill in the artwould also recognize that such methods may be carried out in hardware,in firmware, or in more specialized apparatus constructed to perform therequired method steps.

While particular embodiments of the present invention have been shownand described, it will be obvious to those skilled in the art that,based upon the teachings herein, that changes and modifications may bemade without departing from this invention and its broader aspects.Therefore, the appended claims are to encompass within their scope allsuch changes and modifications as are within the true spirit and scopeof this invention. Furthermore, it is to be understood that theinvention is solely defined by the appended claims. It will beunderstood by those with skill in the art that if a specific number ofan introduced claim element is intended, such intent will be explicitlyrecited in the claim, and in the absence of such recitation no suchlimitation is present. For non-limiting example, as an aid tounderstanding, the following appended claims contain usage of theintroductory phrases “at least one” and “one or more” to introduce claimelements. However, the use of such phrases should not be construed toimply that the introduction of a claim element by the indefinitearticles “a” or “an” limits any particular claim containing suchintroduced claim element to inventions containing only one such element,even when the same claim includes the introductory phrases “one or more”or “at least one” and indefinite articles such as “a” or “an”; the sameholds true for the use in the claims of definite articles.

What is claimed is:
 1. A computer implemented method comprising:reading, from a text file, a plurality of hardware componentidentifiers; assigning a plurality of component instances to a datastructure, wherein the component instances correspond to hardwarecomponent identifiers and wherein component instances in the datastructure include a column identifier and a row identifier; retrievingwidths and heights corresponding to the hardware component identifiers;and organizing hardware components included in the data structure in ahardware graphics layout based upon the column and row identifier of thecomponents and based upon the width and height of the components,wherein the hardware graphics layout is adapted to be read by a visualhardware circuit design tool positioning a first plurality of componentsin a first row, wherein each of the first plurality of components isplaced horizontally adjacent to one another; and positioning a secondplurality of components in a second row, wherein the second row isoriented horizontally above the first row at a position greater than thecomponent in the first plurality of components with the greatest height,where each of the second plurality is also placed horizontally adjacentto one another, reading an initialize command from the text file and alarge component to be placed after the initialize command is processed;and in response to the initialize command: placing the large componentat a position where the bottom edge of the large component is the sameas the bottom edge of the first row of components, the left edge of thelarge component is to the right of the last components in the first andsecond rows, and the height of the large component is greater than allof the first plurality of components.
 2. The computer implemented methodof claim 1 further comprising: assigning one or more additionalparameters to each of the plurality of components and storing theadditional parameters in the data structure, wherein the additionalparameters are selected from the group consisting of an orientation, anoffset, and a priority.
 3. The computer implemented method of claim 1further comprising: identifying the component with the largest height inthe first row, wherein the placing of components in a second row beginat a height greater than the largest height identified in the first row.4. The computer implemented method of claim 1 wherein the width andheight of each component are retrieved from a component library.